草庐IT

Swift、OpenGL 和 glVertexAttribPointer

全部标签

c++ - OpenGL体素引擎慢

我正在用C++和OpenGL(在Minecraft中)制作一个体素引擎,但在我的ATIX1600的3GHz上无法获得不错的fps...我完全没有想法。当我的屏幕上有大约12000个立方体时,它会降到20fps以下-可悲。到目前为止,我进行的优化是:截锥体剔除、背面剔除(通过OpenGL的glEnable(GL_CULL_FACE))、引擎仅绘制可见面(当然剔除面除外)并且它们位于八叉树中。我试过VBO,我不喜欢它们,而且它们不会显着提高帧率。Minecraft的引擎怎么能这么快...我很难处理10000个立方体,而Minecraft可以轻松以更高的fps绘制更多。有什么想法吗?

c++ - OpenGL,着色器模型 3.3 纹理 : Black Textures?

几个小时以来,我一直在努力解决这个问题,我确信这很简单,但我就是得不到结果。我不得不稍微编辑一下这段代码,因为我构建了一个小库来封装OpenGL调用,但以下是对事态的准确描述。我正在使用以下顶点着色器:#version330invec4position;invec2uv;outvec2varying_uv;voidmain(void){gl_Position=position;varying_uv=uv;}以及以下片段着色器:#version330invec2varying_uv;uniformsampler2Dbase_texture;outvec4fragment_colour;v

c++ - 使用 OpenCV 为 OpenGL 加载纹理

我看过很多为OpenGL加载纹理的代码示例,其中许多代码示例有点难以理解或需要大量代码的新功能。我在想,因为OpenCV允许我们加载任何图像格式,所以它可以是将纹理加载到OpenGL的一种简单有效的方法,但我遗漏了一些东西。我在c++中有这段代码:cv::Mattexture_cv;GLuinttexture[1];intStatus=FALSE;if(texture_cv=imread("stones.jpg")){Status=TRUE;//SetTheStatusToTRUEglGenTextures(1,&texture[0]);//CreateTheTextureglBind

c++ - Eclipse 标记 OpenGL 函数无法解析

我尝试在EclipseC/C++中使用一些OpenGL函数。一些像GlClear这样的“标准”函数被eclipse识别,而其他像glBindBuffer()和glEnableVertexAttribArray()则不是。它们只是用红色下划线标出。然而编译是成功的,只有这个令人不安的下划线..我已经链接了glut、GL、GLU和GLEW,我的操作系统是archlinux。我使用的是eclipse3.7.2我还必须做什么才能避免这些错误? 最佳答案 尝试右键单击您的项目并在弹出菜单中:Index>Rebuild

c++ - OpenGL/VTK : setting camera intrinsic parameters

我正在尝试在VTK中渲染3D网格的View,我正在执行以下操作:vtkSmartPointerrender_win=vtkSmartPointer::New();vtkSmartPointerrenderer=vtkSmartPointer::New();render_win->AddRenderer(renderer);render_win->SetSize(640,480);vtkSmartPointercam=vtkSmartPointer::New();cam->SetPosition(50,50,50);cam->SetFocalPoint(0,0,0);cam->SetVi

c++ - OpenGL LookAt 函数 : is the up vector arbitrary?

我正在尝试理解glLookAt函数。需要3个三元组。第一个是眼睛位置,第二个是眼睛凝视的点。那个点会出现在我的视口(viewport)的中心,对吧?第三个是“向上”vector。如果它垂直于从眼睛到凝视点的vector,我理解“向上”vector的含义。问题是,是否允许为up指定其他vector,如果可以,那是什么意思?gluPerstpective、glLookAt和glFrustum的图形详细解释的链接也将不胜感激。官方OpenGL文档似乎不适合新手。请注意,我理解upvector垂直于eye->objectvector时的含义。问题是什么意思(如果有的话),如果不是的话。我无法通

c++ - 模型减慢游戏速度 - opengl

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭去年。Improvethisquestion我在运行游戏时遇到问题。我在游戏中导入的模型很大,导致fps下降。没关系,但是当我从模型上取下相机时,它仍然很慢。与其他游戏一样,当查看高分辨率模型时,游戏速度会变慢,但当不查看时,它会变得更快。但是我的游戏一直很慢。谁能帮帮我?

c++ - OpenGL:如何渲染完美的矩形渐变?

我可以只用一个三角形渲染三角形渐变,并为每个角使用glColor。但是如何渲染完美的矩形渐变呢?我尝试了一个四边形,但中间会出现难看的接缝。我还尝试了2x2大小的纹理,就像应该这样做:从每个角落进行适当的混合,但是当拉伸(stretch)太多时纹理采样精度变得不精确(我开始看到大于1x1大小的像素)。也许有一些方法可以在着色器中计算这个?--编辑:图片链接已损坏(已删除)。 最佳答案 确实,您想要的渐变类型依赖于每个像素的4种颜色,而OpenGL通常只在三角形上插入输入(因此3个输入)。仅使用标准插值无法获得完美的渐变。现在,正如您

c++ - (定义一个宏来)方便OpenGL命令调试?

有时需要很长时间插入条件打印并检查glGetError()以使用二进制搜索形式缩小范围,其中第一个函数调用是OpenGL首先报告错误。我认为,如果有一种方法可以构建一个宏,我可以环绕所有可能失败的GL调用,并在之后立即有条件地调用glGetError,那将会很酷。当为一个特殊目标编译时,我可以让它以非常高的粒度检查glGetError,而为典型的发布或调试编译时,这不会被启用(我只会每帧检查一次)。这样做有意义吗?稍微搜索了一下,我发现一些人建议在每次非绘制gl调用之后调用glGetError,这基本上与我描述的相同。那么在这种情况下,我可以做些什么(上下文:我正在使用GLEW)来简化

Swift:嵌套型擦除

使用Swift3.0(如果那会帮助我,我可以使用Swift4.0...但是我认为不会),我想键入擦除两个级别。我要键入具有关联类型的协议,该协议符合协议本身具有相关类型的协议。所以有人可以说我想输入擦除嵌套相关类型。下面的代码是我的代码的极其简化的版本,但更明显。所以我真正想要的就是这样:原始场景-未解决protocolMotor{varpower:Int{get}}protocolVehicle{associatedTypeEngine:Motorvarengine:Engine{get}}protocolTransportation{associatedTypeTransport:Vehi